package com.fgi.interview.test.geekbang.lambda;

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

import static com.fgi.interview.test.geekbang.lambda.IterateListLambdaAppMain.addElementsToList;

/**
 * @author HanXu
 * @date 2023/9/18
 **/
public class UseStreamAppMain {
    public static void main(String[] args) {
        List<String> myList = addElementsToList(new ArrayList<>());
        System. out. println("------------Lambda的奥义") ;
        // TODO lambda 的奥义是使用lambda-个接着一个处理，不要停，一路处理下去，直到业务结束
        // TOD0 理性来说，lambda结构对计算优化是友好的;感性地说，这种方式会产生一种美，让人莫名感到舒适
        myList.stream().filter(s -> s.length() > 4).forEach(System.out::println);

        // TODO 当然也可以使用collector让数据重新生成一个L ist
        System.out.println("--使用collector-----------");
        List<String> longgerStrList = myList.stream().filter(s -> s.length() > 4)
                .map(String::toUpperCase).collect(Collectors.toList() ) ;
        longgerStrList.forEach(System.out::println);

    }
}
